草庐IT

linux - Linux bash 中波浪号的含义(不是主目录)

首先,我知道~/是主目录。CDing到~或~/会将我带到主目录。但是,cd~X将我带到了一个特殊的地方,X似乎是任何东西。在bash中,如果我点击"cd~"并点击tab,它会显示一堆可能的~X选项,例如~mail和~postgres和~ssh。转到这些文件夹并执行pwd显示这些文件夹不在主目录中;他们到处都是。它们不是别名。我已经检查过了。它们不是env.变量,否则它们需要$。什么是设置这些链接,我在哪里可以找到这些设置的位置? 最佳答案 这是一个名为“tildeexpansion”的Bash功能。这是外壳的功能,而不是操作系统。例

linux - 在 Bash 中,如何在文件的每一行之后添加一个字符串?

如何使用bash在文件的每一行之后添加一个字符串?可以用sed命令完成吗,如果可以怎么办? 最佳答案 如果您的sed允许通过-i参数进行就地编辑:sed-e's/$/stringaftereachline/'-ifilename如果没有,你必须制作一个临时文件:typesetTMP_FILE=$(mktemp)touch"${TMP_FILE}"cp-pfilename"${TMP_FILE}"sed-e's/$/stringaftereachline/'"${TMP_FILE}">filename

Linux bash : Multiple variable assignment

在linuxbash中是否存在类似于PHP中以下代码的内容:list($var1,$var2,$var3)=function_that_returns_a_three_element_array();即您在一句话中为3个不同的变量分配了相应的值。假设我有bash函数myBashFuntion将字符串“qwertasdfgzxcvb”写入标准输出。是否可以做类似的事情:(var1var2var3)=(`myBashFuntionparam1param2`)等号左边的部分当然不是有效的语法。我只是想解释一下我的要求。但是,以下是有效的:array=(`myBashFuntionparam1

linux - 在 bash 中检查当前分区的可用磁盘空间

我正在用bash编写安装程序。用户将转到目标目录并运行安装脚本,因此第一个操作应该是检查是否有足够的空间。我知道df会报告所有文件系统,但我想知道是否有办法为目标目录所在的分区获取可用空间。编辑-我想出的答案df$PWD|awk'/[0-9]%/{print$(NF-2)}'有点奇怪,因为df似乎格式化了它的输出以适应终端,所以如果安装点名称很长,输出会向下移动一行 最佳答案 是的:df-k.对于当前目录。df-k/some/dir如果你想检查一个特定的目录。如果您的系统有stat(1)命令,您可能还想查看它。您可以指定输出格式以使

linux - 如何在 Bash 中运行超时的进程?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Bashscriptthatkillsachildprocessafteragiventimeout有没有办法编写一个shell脚本来执行某个命令15秒,然后终止该命令?我尝试过sleep、wait和ping,但可能我用错了。 最佳答案 使用超时命令:timeout15scommand注意:在某些系统上您需要安装coreutils,而在其他系统上它会丢失或具有不同的命令行参数。请参阅@ArjunShankar发布的替代解决方案。基于它,您可以封装样板代码并

linux - 没有行号的 Bash 历史记录

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与aspecificprogrammingproblem,asoftwarealgorithm,orsoftwaretoolsprimarilyusedbyprogrammers无关.如果您认为该问题将成为anotherStackExchangesite上的主题,您可以发表评论,说明在哪里可以回答问题。关闭去年。锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。bashhistory命令非常酷。我明白为什么它显示行号,但是有没有办法可以调

linux - Bash循环中的计数器增量不起作用

我有以下简单的脚本,我在其中运行一个循环并想要维护一个COUNTER。我无法弄清楚为什么计数器没有更新。是因为创建了子shell吗?我该如何解决这个问题?#!/bin/bashWFY_PATH=/var/log/nginxWFY_FILE=error.logCOUNTER=0grep'GET/log_'$WFY_PATH/$WFY_FILE|grep'upstreamtimedout'|awk-F',''{print$2,$4,$0}'|awk'{print"http://domain.example"$5"&ip="$2"&date="$7"&time="$8"&end=1"}'|a

linux - 检查 Bash 列表中是否存在变量

我正在尝试用bash编写一个脚本来检查用户输入的有效性。我想将输入(比如变量x)与有效值列表匹配。我现在想到的是:foritemin$listdoif["$x"=="$item"];thenecho"Inthelist"exitfidone我的问题是是否有更简单的方法来做到这一点,对于大多数编程语言,类似于list.contains(x)。说list是:list="112233"我的代码只会为这些值回显消息,因为list被视为数组而不是字符串,所有字符串操作都将验证1而我希望它失败。 最佳答案 [[$list=~(^|[[:spac

bash - 如何在 bash 中将所有文件从一个目录符号链接(symbolic link)到另一个目录?

已结束。这个问题是off-topic.它目前不接受答案。想要改进这个问题?Updatethequestion所以它是on-topic堆栈溢出。关闭13年前。Improvethisquestion我想将/mnt/usr/lib/中的所有文件链接(ln-s)到/usr/lib/文件很多,如何快速完成?:) 最佳答案 ln-s/mnt/usr/lib/*/usr/lib/我猜,不过这属于super用户。 关于bash-如何在bash中将所有文件从一个目录符号链接(symboliclink)到另

bash - 如何在 Bash 中比较两个点分隔版本格式的字符串?

有没有办法在bash上比较这些字符串,例如:2.4.5和2.8和2.4.5.1? 最佳答案 这是一个不需要任何外部实用程序的纯Bash版本:#!/bin/bashvercomp(){if[[$1==$2]]thenreturn0filocalIFS=.localiver1=($1)ver2=($2)#fillemptyfieldsinver1withzerosfor((i=${#ver1[@]};i10#${ver2[i]}))thenreturn1fiif((10#${ver1[i]}';;2)op='4.084.08.013.2